#ifndef HASH_H
#define HASH_H

#define TAMHASH 13

typedef enum { 
   f_Hash, f_CriaTabela, f_InsereTabela, f_RemoveTabela,
   f_ConsultaTabela, f_NumeroAlunosTabela, f_ImprimeTabela,
   f_LiberaTabela
} Funcoes;

typedef enum {false, true} boolean;

typedef struct TabelaHash TabelaHash;

typedef struct {
   int ra;
   char *nome;
} Aluno;

typedef struct NoAux {
   Aluno aluno;
   struct NoAux *prox;
} No, *Lista;

struct TabelaHash {
   int num;
   Lista tabela[TAMHASH];
};

unsigned int Hash(char *nome);

TabelaHash* CriaTabela();

boolean InsereTabela(TabelaHash* t, Aluno *a);

boolean RemoveTabela(TabelaHash* t, char *nome);

boolean ConsultaTabela(TabelaHash *t, char *nome, Aluno *a);

int NumeroAlunosTabela(TabelaHash *t);

void ImprimeTabela(TabelaHash *t);

void LiberaTabela(TabelaHash *t);

#endif
